<?php


namespace XiaoGuai\DataStructure\LineList;


interface ListInterface
{
    /**
     * 构造一个线性表
     * ListInterface constructor.
     */
    public function __construct();

    /**
     * 判断线性表的元素是否为空
     * @return bool
     */
    public function isEmpty(): bool;

    /**
     * 清空线性表,将线性表的数据初始化
     */
    public function clear();

    /**
     * 返回线性表当前的元素个数
     * @return int
     */
    public function getLength(): int;

    /**
     * 根据索引获取元素
     * @param int $index
     * @return mixed
     */
    public function getElement(int $index);

    /**
     * 查找元素的索引位置
     * @return int
     */
    public function getIndex($element): int;

    /**
     * 在对应索引处前面插入数据元素
     * @param int $index
     * @param $element
     * @return bool
     */
    public function insertElement(int $index, $element): bool;

    /**
     * 删除对应索引位置的元素
     * @param int $index
     * @return bool
     */
    public function deleteElement(int $index): bool;
}